]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
backgroundManager: Always emit 'loaded' signal
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 22 Jul 2020 10:32:49 +0000 (12:32 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Wed, 22 Jul 2020 11:02:24 +0000 (11:02 +0000)
As backgrounds are cached, it is possible that we never emit the
'loaded' signal added in commit f386103bc1. We are relying on the
signal though, so do the same as Background and emit the signal
from an idle if the background was already loaded.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1371

js/ui/background.js

index 2811da3fb06f09e61258dedf32106bc752adf44e..6ee1b31a6a6956da6c02924626bbf514f1283e3c 100644 (file)
@@ -765,11 +765,19 @@ var BackgroundManager = class BackgroundManager {
             this._updateBackgroundActor();
         });
 
-        let loadedSignalId = background.connect('loaded', () => {
-            background.disconnect(loadedSignalId);
-            loadedSignalId = null;
-            this.emit('loaded');
-        });
+        let loadedSignalId;
+        if (background.isLoaded) {
+            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
+                this.emit('loaded');
+                return GLib.SOURCE_REMOVE;
+            });
+        } else {
+            loadedSignalId = background.connect('loaded', () => {
+                background.disconnect(loadedSignalId);
+                loadedSignalId = null;
+                this.emit('loaded');
+            });
+        }
 
         backgroundActor.connect('destroy', () => {
             if (changeSignalId)